package com.gec.zhs.service;

import com.gec.zhs.entity.pojo.VideoInfoFilePost;
import com.gec.zhs.entity.pojo.VideoInfoPost;
import com.gec.zhs.entity.query.VideoInfoPostQuery;
import com.gec.zhs.entity.vo.PaginationResultVO;

import java.io.IOException;
import java.util.List;



/**
 * @author zhs
 * @version 1.0
 * @date 2025-02-09
 * @description
 */
public interface VideoInfoPostService {

    /**
     * 根据条件查询列表
     */
    List<VideoInfoPost> findListByParam(VideoInfoPostQuery param);

    /**
     * 查询视频数量
     */
    Integer findCountByParam(VideoInfoPostQuery param);

    /**
     * 分页查询
     */
    PaginationResultVO<VideoInfoPost> findListByPage(VideoInfoPostQuery param);

    /**
     * 新增
     */
    Integer add(VideoInfoPost bean);

    /**
     * 批量新增
     */
    Integer addBatch(List<VideoInfoPost> listBean);

    /**
     * 批量新增/修改
     */
    Integer addOrUpdateBatch(List<VideoInfoPost> listBean);

    /**
     * 多条件更新
     */
    Integer updateByParam(VideoInfoPost bean, VideoInfoPostQuery param);

    /**
     * 多条件删除
     */
    Integer deleteByParam(VideoInfoPostQuery param);

    /**
     * 根据VideoId查询对象
     */
    VideoInfoPost getVideoInfoPostByVideoId(String videoId);


    /**
     * 根据VideoId修改
     */
    Integer updateVideoInfoPostByVideoId(VideoInfoPost bean, String videoId);


    /**
     * 根据VideoId删除
     */
    Integer deleteVideoInfoPostByVideoId(String videoId);

    //视频投稿
    void saveVideoInfo(VideoInfoPost videoInfoPost, List<VideoInfoFilePost> uploadFileList);

    /**
     * 文件转码
     *
     * @param videoInfoFilePost
     */
    void transferVideoFile(VideoInfoFilePost videoInfoFilePost) throws IOException;

    /**
     * 视频审核
     *
     * @param videoId,status,reason
     */
    void auditVideo(String videoId, Integer status, String reason);

    /**
     * 推荐视频
     *
     * @param videoId
     */
    void recommendVideo(String videoId);
}